/**
 * jims
 */
package com.jims.master.modules.drug.dao;

import com.jims.master.common.persistence.CrudDao;
import com.jims.master.common.persistence.annotation.MyBatisDao;
import com.jims.master.common.web.impl.BaseDto;
import com.jims.master.modules.drug.entity.DrugBuyPlan;
import com.jims.master.modules.drug.entity.DrugInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 药品采购计划DAO接口
 * @author DT
 * @version 2017-03-22
 */
@MyBatisDao
public interface DrugBuyPlanDao extends CrudDao<DrugBuyPlan> {

    /**
     * 自动生成采购计划药品名称补全
     * @param drugInfo  药品基本信息
     * @param orgId     组织机构ID
     * @param storageId 库房ID
     * @return
     * @author fengyg
     * @date 2017-03-17
     */
    public List<DrugBuyPlan> autoBuyPlanDrugInfo(@Param("drugInfo") DrugInfo drugInfo, @Param("orgId") String orgId, @Param("q") String q, @Param("limit") String limit, @Param("storageId") String
            storageId);

    /**
     * 根据采购单状态查询采购单据号
     * @param stateFlag 采购单状态代码
     * @param orgId 组织机构ID
     * @param storageId 库房ID
     * @return
     * @author fengyg
     */
    public List<DrugBuyPlan> getBuyPlanNum(@Param("stateFlag")String stateFlag,@Param("orgId")String orgId,@Param("storageId")String storageId);

    /**
     * 根据采购单号查询采购单详细信息
     * @param drugBuyPlan
     * @return
     * @author fengyg
     */
    public List<DrugBuyPlan> getListByPlanNum(DrugBuyPlan drugBuyPlan);

    /**
     *根据采购单号查找采购单
     * @param drugBuyPlan
     * @return
     * @author DT
     */
    public DrugBuyPlan findByNumber(DrugBuyPlan drugBuyPlan);

    /**
     * 更改采购单状态
     * @return
     * @author fengyg
     */
    public int updateStateFlag(DrugBuyPlan drugBuyPlan);
    /**
     * 根据采购单号查询采购单详细信息并打印
     * @param drugBuyPlan
     * @return
     * @author DT
     */
    public List<BaseDto> getDrugPlanListPrint(DrugBuyPlan drugBuyPlan);
    /**
     * 采购药品入库换厂商换药自动补全查询
     * @param q
     * @param drugCode
     * @param limit
     * @return
     * @author CTQ
     */
    public List<BaseDto> findListByParam(@Param("q") String q, @Param("drugCode") String drugCode, @Param("limit") String limit,@Param("orgId")String orgId);
}